博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
和lock一起学beego 博客系统开发为例(五)
阅读量:6866 次
发布时间:2019-06-26

本文共 3049 字,大约阅读时间需要 10 分钟。

  hot3.png

接着上篇来写《》

这篇主要完成以下事项:

下篇我们要完成下面三个任务:

1、模板的使用

2、基控制器BaseController的定义

3、session的使用

一、模板的使用

接着上篇文章,这里也是以article为例,在后面会把完整的代码发布到github上!

在article控制器里有三个Get方法,分别是:

1、article.tpl 列表

2、article-detail.tpl 详情

3、article-form.tpl 博客的发布与编辑

在控制器里:可以看上篇,在 控制器方法有写

this.Data["paginator"] = paginatorthis.Data["art"] = artthis.TplName = "article.tpl"

1、article.tpl模板

{<div></div> {config "String" "globaltitle" ""}}{
{template "inc/meta.tpl" .}}{
{template "inc/head.tpl" .}}
{
{if $.isLogin }}
{
{end}} {
{range $k,$v := .art}}

{ {$v.Title}}({
{date $v.Created}})

{

{$v.Summary}}

{
{if $.isLogin }}

{

{if eq $v.Status 0}}{
{end}} 修改

{
{end}}
{
{end}} {
{if .paginator.HasPages}}
{
{end}}

 

在说模板中引用配置文件可以用{{config 类型 名称键 默认值}},这样可以 定义全局变量如网站名称等

模板中列表用rang方法来显示循环,下面有一个分页的程序,可以看一下

其它的模板类似,后续会发布到github上。

二、基控制器BaseController的定义

因为我们的博客没有独立的后台,在前台里可以发布和编辑的,在上面的模板中我们看到$.isLogin来判断!

那这个怎么定义了,看如下:

package controllersimport (	"github.com/astaxie/beego")type BaseController struct {	beego.Controller	isLogin bool}func (this *BaseController) Prepare() {	userLogin := this.GetSession("userLogin")	if userLogin == nil {		this.isLogin = false	} else {		this.isLogin = true	}	this.Data["isLogin"] = this.isLogin}func (this *BaseController) Go404() {	this.TplName = "404.tpl"	return}

说明:我们在控制器里建立了一个base.go作为基类,每个控制器都继承这个控制器;让我们回顾一下前面控制器介绍的:

//添加blogtype AddArticleController struct {	BaseController}

都继承这个控制器。在beego中,有个预处理的Prepare方法,这个方法会在其它方法执行前操作,可以用作用户登录验证之类的。在基类中也重定义了一个参数isLogin来验证是否登录。这样在每个控制器都可以引用这个变量,上面的模板中也有引用。

三、session 的使用

在上面的控制器中,大家也看到session的使用。session有最基本的三个方法:

在获取session的时候,大家要注意一下,类型要进行转换:

strn := this.GetSession("uploadMultiName")strn = strings.Trim(strn.(string), "||")

记得用.string来进行转换,其它类型也这样的,不能直接string来进行转换。

当然session要记得开启,可以在配置文件中开启。

beego默认是memory存储,当然你可以使用其它的file,memcache,redis,mysql等,这里介绍使用file的使用

sessionon = true#sessionprovider = memorysessionprovider = filesessionproviderconfig = "./tmp"sessiongcmaxlifetime = 31536000sessioncookielifetime = 31536000

在这里说明一下,新版中

SessionSavePath

已经被sessionproviderconfig替换掉了,官方文档也没有更新,在此特意说明一下,不替换的话,file指定目录会不启作用,会在根目录生成hash目录。

好了,今天到此结束,下篇会说:

1、第三方工具方法的定义

2、mysql全局的定义及全局初始化方法定义与使用

3、在模板中如何使用自己方法

  • SetSession(name string, value interface{})
  • GetSession(name string) interface{}
  • DelSession(name string)

转载于:https://my.oschina.net/lockupme/blog/694102

你可能感兴趣的文章
本地安装sass出错问题解析
查看>>
vue项目优化--使用CDN和Gzip
查看>>
JS练习实例--编写经典小游戏俄罗斯方块
查看>>
简述Linux的启动过程
查看>>
fir.im Weekly - 如何写出零 bug 的代码
查看>>
springboot+postgresql+docker实例
查看>>
[LeetCode] Reverse Vowels of a String
查看>>
Java集合类的排序
查看>>
猴子都能看懂的《Git 分支管理》
查看>>
【面试算法】链表反转
查看>>
Git基本命令学习
查看>>
读书笔记:高性能网站建设
查看>>
镭速(Raysync)文件传输高可用安装部署介绍!
查看>>
使用 Jaeger 完成服务间的链路追踪
查看>>
Java NIO使用及原理分析 (一)
查看>>
「技术层面」剖析B2B供应链系统技术架构的部署方案 ...
查看>>
《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.3 数码相机日常使用注意事项...
查看>>
《程序员之禅》一一10.10 淡泊宁静
查看>>
《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建
查看>>
还在用密码登录 ECS?ECS 控制台更安全的 SSH 密钥对 来了
查看>>